//package test_achieve.userapp;
//
//import constant.Constant;
//import cucumber.api.java.en.Given;
//import cucumber.api.java.zh_cn.假如;
//import cucumber.api.java.zh_cn.同时;
//import cucumber.api.java.zh_cn.并且;
//import cucumber.api.java.zh_cn.那么;
//import org.openqa.selenium.By;
//import org.testng.Assert;
//import util.InitDrivers;
//import util.tools.CommonTools;
//
//import java.util.concurrent.TimeUnit;
//
//
///**
// * Created by Benchi on 2017/7/19.
// * 用于封装 app用端的业务，例如下一个即时单
// */
//public class ClientBusiness {
//  //    @Given("^a输入用户的账户(\\d+)密码(\\d+)$")
////    @Given("^a输入用户的账户密码:(.+)：(.+)$")
//
////    @Given("^a用户下一个及时单:(.+)：(.+):(.+)：(.+)$")
////    public void a用户下一个及时单(String city,String fAdr,String tel,String toAdr) throws Throwable {
////
////    }
//
//    MakeOrder makeOrder;
//    OrderMain orderMain;
//    Login login =new Login();
//    PersonCenter pc= new PersonCenter();
//
//    public ClientBusiness() {
//        makeOrder = new MakeOrder();
//        orderMain = new OrderMain();
//    }
//
//    @Given("^a用户已登录:(.+)$")
//    public void a用户已登录(String uuid) throws Exception {
//        //启动模拟器的driver,并且保留之前的登录状态
////        Constant.clientDriver= InitDrivers.getDriverWithLogined("127.0.0.1:62001");
//        Constant.clientDriver= InitDrivers.getDriverWithLogined(uuid);
//        Constant.clientDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);//查找元素超时时间10秒
////        System.out.println("=========beforeScenarioLogined1:   "+uuid);
//        //登录后 ，如果有之前下的单，超时后被系统取消，会弹出下面的窗口，点击 “暂时不需要”即可
//        if (CommonTools.isElementExist(Constant.clientDriver,By.id("cn.ishansong:id/titile_txt"))){
//            Constant.clientDriver.findElement(By.id("ok_btn")).click();//点击：“暂时不需要”
//        }
//        //4.4.80版本后有开机图片，点击关闭按钮
//        if (CommonTools.isElementExist(Constant.clientDriver,By.id("close_btn"))){
//            Constant.clientDriver.findElement(By.id("close_btn")).click();//点击关闭按钮
//        }
//
//    }
////    @假如("^a用户已登录:(.+)$")
////    public void a用户已登录(String uuid) throws Throwable {
////        // Write code here that turns the phrase above into concrete actions
////        throw new PendingException();
////    }
//    @Given("^a用户下一个及时单:(.+)：(.+)：(.+)：(.+)$")
//    public void a用户下一个及时单(String city,String fAdr,String toAdr,String tel) throws Throwable {
//        makeOrder.a点击物品从哪里寄出();
////        orderMain.a切换城市到(city);
//        orderMain.a输入地址(fAdr);
//        orderMain.a输入楼层门牌号();
//        orderMain.a输入姓名();
//        orderMain.a输入手机号(tel);
//        orderMain.a收寄件信息点击确定();
//        makeOrder.a点击物品送到哪里去();
//        orderMain.a输入地址(toAdr);
//        orderMain.a输入楼层门牌号();
//        orderMain.a输入姓名();
//        orderMain.a输入手机号(tel);
//        orderMain.a收寄件信息点击确定();
//        makeOrder.a点击物品类型();
//        makeOrder.a选择物品类型为食品();
//        makeOrder.a物品类型页面中点击确认();
//        orderMain.a点击下一步();
//        orderMain.a获取支付总价();
//        orderMain.a获取账户余额();
//        makeOrder.a点击支付();
////        Thread.sleep(5000);
//    }
//    @Given("^a用户下一个历史单$")
//    public void a用户下一个历史单() throws Throwable {
//        makeOrder.a点击物品从哪里寄出();
////        orderMain.a切换城市到("北京市");
//        makeOrder.a点击历史地址();
//        makeOrder.a选择历史地址(0);
//        makeOrder.a点击物品送到哪里去();
//        makeOrder.a选择历史地址(0);
//        makeOrder.a点击物品类型();
//        makeOrder.a选择物品类型为食品();
//        makeOrder.a物品类型页面中点击确认();
//        orderMain.a点击下一步();
//        makeOrder.a点击支付();
//        makeOrder.a获取订单号();
//    }
//
//    @那么("^a用户订单信息正确$")
//    public void a用户订单信息正确() throws Throwable {
//        //闪送员完成单后：在用户订单信息页面  有“恭喜您的物品已送达!” 信息
//        Assert.assertTrue(CommonTools.isElementExist(Constant.clientDriver,"new UiSelector().text(\"恭喜您的物品已送达!\")"));
//    }
//
//
//
//    @那么("^a用户账户余额正确:(\\d+)$")
//    public void a用户账户余额正确(int cost) throws Throwable {
//        Constant.clientDriver.findElement(By.id("custom_title_btn_left")).click();//在用户订单信息页面 点击回退按钮，回到下单页面
//        Constant.clientDriver.findElement(By.id("custom_title_btn_left")).click();//在下单页面 点击个人中心图标，到达个人中心；
//        Constant.clientDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"我的钱包\")").click();;//在个人中心页面 点击我的钱包；
//        //获取当前账户余额
//        Float accout = Float.parseFloat(Constant.clientDriver.findElement(By.id("menu_account")).getText());
//        System.out.println("下完单后账户余额为："+accout);
//        System.out.println("appAccount-cost 为：" + (Constant.appAccount-cost));
//        Assert.assertEquals(accout,Constant.appAccount-cost);
//    }
//    @那么("^a用户取消订单后账户余额正确$")
//    public void a用户取消订单后账户余额正确() throws Throwable {
//        Constant.clientDriver.findElement(By.id("custom_title_btn_left")).click();//在用户订单信息页面 点击回退按钮，回到下单页面
//        Constant.clientDriver.findElement(By.id("custom_title_btn_left")).click();//在下单页面 点击个人中心图标，到达个人中心；
//        Constant.clientDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"我的钱包\")").click();;//在个人中心页面 点击我的钱包；
//        //获取当前账户余额
//        Float accout = Float.parseFloat(Constant.clientDriver.findElement(By.id("menu_account")).getText());
//        System.out.println("取消订单后账户余额为："+accout);
//        Assert.assertEquals(accout,Constant.appAccount);
//    }
//    @Given("^a用户设置下单信息:(.+)：(.+)：(.+)$")
//    public void a用户设置下单信息(String fAdr,String toAdr,String tel) throws Throwable {
//
//        orderMain.a输入地址(fAdr);
//        orderMain.a输入楼层门牌号();
//        orderMain.a输入姓名();
//        orderMain.a输入手机号(tel);
//        orderMain.a收寄件信息点击确定();
//        makeOrder.a点击物品送到哪里去();
//        orderMain.a输入地址(toAdr);
//        orderMain.a输入楼层门牌号();
//        orderMain.a输入姓名();
//        orderMain.a输入手机号(tel);
//        orderMain.a收寄件信息点击确定();
//
//     }
//
//    @Given("^a用户登录成功:(.+)：(.+)$")
//    public void a用户登录成功(String name,String pw) throws Throwable {
////        login.a已经进入用户登录界面();
////        login.a输入用户的账户密码(name,pw);
////        login.a点击登录按钮();
//    }
//    @Given("^a取消订单$")
//    public void a取消订单() throws Throwable {
//       //在订单进度页 点击 取消订单
//        Constant.clientDriver.findElement(By.id("left_btn")).click();
//        //在弹出提示中 点 确认取消
//        Constant.clientDriver.findElement(By.id("ok_btn")).click();
//        // 在取消原因页面，选择 “暂时不需要邮寄了”
//        Constant.clientDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"暂时不需要邮寄了\")").click();
//        Constant.clientDriver.findElement(By.id("submit_btn")).click();
//    }
//
//
//    @假如("^a在我的钱包中获取余额$")
//    public void a在我的钱包中获取余额() throws Throwable {
//        pc.a用户点击个人中心();
//        pc.a用户点击我的钱包();
//        Thread.sleep(5000);
//        String s=Constant.clientDriver.findElement(By.id("menu_account")).getText();
//        System.out.println("获得账户余额=========="+s);
//        Constant.appAccount= Float.valueOf(s);
//        System.out.println("获得账户余额=========="+Constant.appAccount);
//        //回到下单页面
//        Constant.clientDriver.findElement(By.id("custom_title_btn_left")).click();
//        Constant.clientDriver.findElement(By.id("cn.ishansong:id/addr_ji")).click();
//    }
//
//    @同时("^a根据订单号进入订单进度页$")
//    public void a根据订单号进入订单进度页() throws Throwable {
//        Constant.clientDriver.findElementByAndroidUIAutomator("new UiSelector().text(\""+Constant.OrderNumbuter.get(Constant.OrderNumbuter.size()-1)+"\")").click();
//    }
//    @同时("^获取闪送员订单状态$")
//    public void 获取闪送员订单状态() throws Throwable {
////        int i=Helper.getIndexByorderNumber( Constant.clientDriver,Constant.OrderNumbuter);
//        Thread.sleep(10000);
//       System.out.println("========"+Constant.driverCourier.findElement(By.id("com.ishansong:id/status_txt")).getText());
//       String orderStatus= Constant.driverCourier.findElement(By.id("com.ishansong:id/status_txt")).getText();
//
//    }
//    @同时("^闪送员已抢单变为已取消$")
//    public void 闪送员已抢单变为已取消() throws Throwable {
////        int i=Helper.getIndexByorderNumber( Constant.clientDriver,Constant.OrderNumbuter);
//        Thread.sleep(10000);
//        //验证弹出取消信息，例如：订单：TDH2017090418095797已被下单人取消。
//       Assert.assertTrue( Constant.driverCourier.findElement(By.id("tvContent")).getText().contains("取消"));
//       //点击 我知道了
//        Constant.driverCourier.findElement(By.id("btnOk")).click();
//        System.out.println("========"+Constant.driverCourier.findElement(By.id("com.ishansong:id/status_txt")).getText());
//        String orderStatus= Constant.driverCourier.findElement(By.id("com.ishansong:id/status_txt")).getText();
//        Assert.assertEquals(orderStatus,"已取消");
//    }
//
//
//    @并且("^a选择物品类型:(.+)$")
//    public void a选择物品类型(String type) throws Throwable {
//        makeOrder.a点击物品类型();
//        if(CommonTools.isElementExist(Constant.clientDriver,"new UiSelector().text(\""+type+"\")")){
//            Constant.clientDriver.findElementByAndroidUIAutomator("new UiSelector().text(\""+type+"\")").click();
//            if("其他".equals(type)){
//                Constant.clientDriver.findElement(By.id("goods_name_et")).click();
//                Constant.clientDriver.findElement(By.id("goods_name_et")).sendKeys(type);
//            }
//        }else {
//            Constant.clientDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"其他\")").click();
//            Constant.clientDriver.findElement(By.id("goods_name_et")).click();
//            Constant.clientDriver.findElement(By.id("goods_name_et")).sendKeys(type);
//        }
//        makeOrder.a物品类型页面中点击确认();
//    }
//    @同时("^a获取订单信息$")
//    public void a获取订单信息() throws Throwable {
//        //存放订单详情信息：订单号，总价，距离，重量，寄件地址，寄件人信息，收件地址，收件人信息，取件时间，物品信息
//        String orderN= Constant.clientDriver.findElement(By.id("tasknum_txt")).getText();
//        String totalamount= Constant.clientDriver.findElement(By.id("head_totalamount_txt")).getText();
//        String distance= Constant.clientDriver.findElement(By.id("head_distance_txt")).getText();
//        String weight= Constant.clientDriver.findElement(By.id("head_weight_txt")).getText();
//        String fAdr= Constant.clientDriver.findElement(By.id("ji_addr_txt")).getText();
//        String fName= Constant.clientDriver.findElement(By.id("ji_name_edit")).getText();
//        String tAdr= Constant.clientDriver.findElement(By.id("shou_addr_txt")).getText();
//        String tName= Constant.clientDriver.findElement(By.id("shou_name_edit")).getText();
//        String time= Constant.clientDriver.findElement(By.id("send_time_txt")).getText();
//        String goodsName= Constant.clientDriver.findElement(By.id("goods_name_edit")).getText();
//        Constant.orderDetail.put("orderN",orderN);
//        Constant.orderDetail.put("totalamount",totalamount);
//        Constant.orderDetail.put("distance",distance);
//        Constant.orderDetail.put("weight",weight);
//        Constant.orderDetail.put("fAdr",fAdr);
//        Constant.orderDetail.put("fName",fName);
//        Constant.orderDetail.put("tAdr",tAdr);
//        Constant.orderDetail.put("tName",tName);
//        Constant.orderDetail.put("time",time);
//        Constant.orderDetail.put("goodsName",goodsName);
//    }
//    @那么("^a再来一单信息正确$")
//    public void a再来一单信息正确() throws Throwable {
//        String weight= Constant.clientDriver.findElement(By.id("weight_txt")).getText();
//        String fAdr=Constant.clientDriver.findElement(By.id("addr_ji")).getText();
//        String fName= CommonTools.stringChange(
//                Constant.clientDriver.findElement(By.id("addr_ji_person_info")).getText(),"  "  ,","
//        );
//        String tAdr=Constant.clientDriver.findElement(By.id("addr_shou")).getText();
//        String tName= CommonTools.stringChange(
//                Constant.clientDriver.findElement(By.id("addr_shou_person_info")).getText(),"  "  ,","
//        );
//
//        String time= Constant.clientDriver.findElement(By.id("time_txt")).getText();
//        String goodsName= Constant.clientDriver.findElement(By.id("goods_name_tv")).getText();
//
////        System.out.println("weight"+Constant.orderDetail.get("weight").toString()+"    "+weight);
////        System.out.println("fAdr"+Helper.stringChange( Constant.orderDetail.get("fAdr").toString(),"--","")+"    "+fAdr);
////        System.out.println("fName"+Constant.orderDetail.get("fName").toString()+"    "+fName);
////        System.out.println("tAdr"+Helper.stringChange( Constant.orderDetail.get("tAdr").toString(),"--","")+"    "+tAdr);
////        System.out.println("tName"+Constant.orderDetail.get("tName").toString()+"    "+tName);
////        System.out.println("time"+Constant.orderDetail.get("time").toString()+"    "+time);
////        System.out.println("goodsName"+Constant.orderDetail.get("goodsName").toString()+"    "+goodsName);
//
//
//        Assert.assertTrue( Constant.orderDetail.get("weight").toString().contains(weight));
//        Assert.assertTrue(CommonTools.stringChange( Constant.orderDetail.get("fAdr").toString(),"--","").contains(fAdr));
//        Assert.assertTrue( Constant.orderDetail.get("fName").toString().contains(fName));
//        Assert.assertTrue(CommonTools.stringChange( Constant.orderDetail.get("tAdr").toString(),"--","").contains(tAdr));
//        Assert.assertTrue( Constant.orderDetail.get("tName").toString().contains(tName));
//        Assert.assertTrue( Constant.orderDetail.get("time").toString().contains(time));
//        Assert.assertTrue( Constant.orderDetail.get("goodsName").toString().contains(goodsName));
//    }
//    @那么("^a用户进行中页面信息正确$")
//    public void a用户进行中页面信息正确() throws Throwable {
//        /**
//         * 我的订单-进行中tab里，验证 所有的订单 都是 待抢单 状态
//         * 1 取出 进行中tab页面的订单数
//         * 2 取出 该tab页下  订单状态 为 待抢单 的订单数
//         * 3 两个数据相等，则正确
//         */
//        int n=Constant.clientDriver.findElements(By.id("tasknum_txt")).size();
//        int m=Constant.clientDriver.findElementsByAndroidUIAutomator("new UiSelector().text(\"待抢单\")").size();
//        Assert.assertTrue(n==m);
//    }
//    @那么("^a用户完成单页面信息正确$")
//    public void a用户完成单页面信息正确() throws Throwable {
//        /**
//         * 我的订单-进行中tab里，验证 所有的订单 都是 完成单 状态
//         * 1 取出 进行中tab页面的订单数
//         * 2 取出 该tab页下  订单状态 为 完成单 的订单数
//         * 3 两个数据相等，则正确
//         */
//        int n=Constant.clientDriver.findElements(By.id("tasknum_txt")).size();
//        int m=Constant.clientDriver.findElementsByAndroidUIAutomator("new UiSelector().text(\"已完成\")").size();
//        Assert.assertTrue(n==m);
//    }
//    @那么("^a用户取消单页面信息正确$")
//    public void a用户取消单页面信息正确() throws Throwable {
//        /**
//         * 我的订单-进行中tab里，验证 所有的订单 都是 取消单 状态
//         * 1 取出 进行中tab页面的订单数
//         * 2 取出 该tab页下  订单状态 为 取消单 的订单数
//         * 3 两个数据相等，则正确
//         */
//        int n=Constant.clientDriver.findElements(By.id("tasknum_txt")).size();
//        int m=Constant.clientDriver.findElementsByAndroidUIAutomator("new UiSelector().text(\"已取消\")").size();
//        Assert.assertTrue(n==m);
//    }
//
//}
